/*
 * @Author: zhangweixin 
 * @Date: 2018-11-07 16:50:37 
 * @Last Modified by: zhangweixin
 * @Last Modified time: 2018-12-18 20:05:11
 */
const path = require('path');
const commonConfig = require('./webpack.common.config.js');
const merge = require('webpack-merge');

// 热模块替换 可以使用
// 命令行加上 --hot
// 或者如下
// const webpack = require('webpack');

// devServer: {
//     hot: true
// }

// plugins:[
//      new webpack.HotModuleReplacementPlugin()
// ]
// 入口文件 index.js 配置代码
// if (module.hot) {
//   module.hot.accept();
// }


let devConfig = {
  entry: {
    app:[
        // "babel-polyfill",
        // 'react-hot-loader/patch',
        path.join(__dirname, 'src/index.js')
      ]
  },
  // output: {
  //   /*这里本来应该是[chunkhash]的，但是由于[chunkhash]和react-hot-loader不兼容。只能妥协*/
  //   filename:'[name].[hash].js'
  // },
  devtool:"eval-source-map",
  devServer:{
    contentBase: path.join(__dirname, './dist'),
    port:8080,
    // open: true,
    host: '0.0.0.0',
    // host 指定一个host,默认是localhost。如果你希望服务器外部可以访问，指定如下：host: "0.0.0.0"。比如你用手机通过IP访问。
    // Specify a host to use. By default this is localhost. If you want your server to be accessible externally, specify it like this:
    historyApiFallback:true, 
    // When using the HTML5 History API, the index.html page will likely have to be served in place of any 404 responses. 
    // devServer.historyApiFallback is disabled by default. Enable it by passing:
    // proxy: {
    //   "/api": "http://localhost:3000"
    // },
    // proxy 代理。比如在 localhost:3000 上有后端服务的话，你可以这样启用代理：
  },
  resolve:{
    alias:{
      ENV:path.join(__dirname,'src/config/env.js'),
    }
  },
  module:{
    rules:[
      {
        test:/\.less$/,
        use:[
          {
            loader:"style-loader",
            // style-loader将所有的计算后的样式加入页面中； 
            // 二者组合在一起使你能够把样式表嵌入webpack打包后的JS文件中。
          },
          {
            loader:"css-loader", 
            // css-loader使你能够使用类似@import 和 url(...)的方法实现 require()的功能；
            options:{
              modules:true,
              localIdentName:'[local]-[hash:base64:5]'
            }
          },
          {
            loader:"postcss-loader"
          },
          {
            loader:'less-loader'
          }
        ],
        // include:path.join(__dirname,'src'),
        exclude:path.join(__dirname,'node_modules'),
      },
    ]
  }
}
module.exports = merge({
  customizeArray(a,b,key){
    /*entry.app不合并，全替换*/
    if(key == "entry.app"){
      return b;
    }
    return undefined
  }
})(commonConfig,devConfig)
